package com.zust.zst.dao.mapper.chooselesson;

import com.zust.zst.common.dto.chooselesson.AddCourseDTO;
import com.zust.zst.common.dto.chooselesson.GetCourseByTermAndCollegeDTO;
import com.zust.zst.common.dto.chooselesson.SearchCourseDTO;
import com.zust.zst.common.vo.chooselesson.CourseInfoVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 课程信息管理dao
 *
 * @author Gavin Zhang
 * @date 2022/11/22 20:51
 */

@Mapper
public interface CourseInfoManagementMapper {

    /**
     * 获取所有学期名
     */
    List<String> getAllTerm();

    /**
     * 获取所有学院名
     */
    List<String> getAllColleges();

    /**
     * 通过学院名获取学院id
     */
    int getCollegeIdByName(@Param("name") String college);

    /**
     * 插入课程信息
     */
    int addCourse(@Param("collegeId") int collegeId, @Param("addCourseDTO") AddCourseDTO addCourseDTO);

    /**
     * 获得对应学期、学院的课程信息
     */
    List<CourseInfoVO> getCourseByTermAndCollege(@Param("collegeId") int collegeId, @Param("dto") GetCourseByTermAndCollegeDTO dto);

    /**
     * 获得对应学期、学院的课程信息条数
     */
    int getTotalLineByTermAndCollege(@Param("term") String term, @Param("college") int college);

    /**
     * 通过课程名获得对应学期、学院的课程信息
     */
    List<CourseInfoVO> getCoursesBySearchingName(@Param("collegeId") int collegeId, @Param("dto") SearchCourseDTO searchCourseDTO);

    /**
     * 获得对应学期、学院、课程名的课程信息条数
     */
    int getTotalLineBySearchingCourse(@Param("term") String term, @Param("college") int college, @Param("course") String course);

    /**
     * 更新课程信息
     */
    int updateCourse(@Param("dto") CourseInfoVO courseInfoVO);

    /**
     * 删除课程
     */
    int deleteCourseById(@Param("courseId")int courseId);
}